package net.carefx.info.query;

import java.util.ArrayList;
import java.util.List;

import net.carefx.domain.fc.InPatiDiag;
import net.carefx.domain.fc.InPatiInfo;
import net.carefx.domain.fc.PatiInfo;

public class PackageMessage {
	
	public String packageToHL7(Object[] objectArray,List Diaglist)
	{

        PatiInfo patiInfo = new PatiInfo(); 
        InPatiInfo inPatiInfo = new InPatiInfo();
        List<InPatiDiag> inpatiDiagList = new ArrayList<InPatiDiag>();
        
        //患者编号
        patiInfo.setPatiId (changToString(objectArray[0]));              
        //身份证号码
        patiInfo.setIdCard (changToString(objectArray[1]));
        
        // 病人姓名
        patiInfo.setPatiName (changToString(objectArray[2]));
        inPatiInfo.setPatiName (changToString(objectArray[2]));
        
        
        //出生日期 
        patiInfo.setBirthDate (changToString(objectArray[4]).replace("-", ""));
        inPatiInfo.setBirthDate (changToString(objectArray[4]).replace("-", ""));
        
        //性别
        patiInfo.setSexCode (changToString(objectArray[5]));
        inPatiInfo.setSexCode (changToString(objectArray[5]));

       
        //家庭地址
        patiInfo.setFiAddr (changToString(objectArray[6]));
        
        //家庭邮编
        patiInfo.setFiPostCode (changToString(objectArray[7]));
        
        //单位地址
        patiInfo.setEntAddr (changToString(objectArray[8]));
        inPatiInfo.setEntAddr (changToString(objectArray[8]));
        
        //单位邮编
        patiInfo.setEntPostCode (changToString(objectArray[9]));
        inPatiInfo.setEntPostCode (changToString(objectArray[9]));
        
        //家庭电话
        patiInfo.setFiTeleNum (changToString(objectArray[10]));
        inPatiInfo.setFlTeleNum (changToString(objectArray[10]));
        
        //单位电话
        patiInfo.setEntTeleNum (changToString(objectArray[11]));
        inPatiInfo.setEntTeleNum (changToString(objectArray[11]));
        
        //婚姻状况编码
        patiInfo.setMarriedCode (changToString(objectArray[12]));
        
        //婚姻状况名称
        patiInfo.setMarriedName (changToString(objectArray[13]));
        
        //民族编码
        patiInfo.setNationalityCode (changToString(objectArray[14])) ;

        //民族名称
        patiInfo.setNationalityName (changToString(objectArray[15]));
        
        //出生地
        patiInfo.setBirthPlace (changToString(objectArray[16]));
        
        //国籍编码
        patiInfo.setCountryCode (changToString(objectArray[17]));
        
        //国籍名称
        patiInfo.setCountryName (changToString(objectArray[18]));
        
        //血型
        patiInfo.setBloodType (changToString(objectArray[19]));
        
        //籍贯地编码
        patiInfo.setNativePlaceCode (changToString(objectArray[20]));
        
        //籍贯地名称
        patiInfo.setNativePlaceName  (changToString(objectArray[21]));
        
        //家庭地区编码
        patiInfo.setFiAreaCode (changToString(objectArray[22]));
        
        //家庭地区名称
        patiInfo.setFiAreaName (changToString(objectArray[23]));
        
        //职退状态编码
        patiInfo.setRetireTypeCode (changToString(objectArray[24]));
        
        //职退状态名称
        patiInfo.setRetireTypeName (changToString(objectArray[25]));
        
        //患者Email
        patiInfo.setPatiEmail (changToString(objectArray[26]));
        
        //职业编码
        patiInfo.setOccupationCode (changToString(objectArray[27]));
        
        //职业名称
        patiInfo.setOccupationName (changToString(objectArray[28]));
        
        //户口所在地编码
        patiInfo.setRegiLocCode (changToString(objectArray[29]));
        
        //户口所在地名称
        patiInfo.setRegiLocName (changToString(objectArray[30]));
        
        //单位名称
        patiInfo.setEntName (changToString(objectArray[31]));
        inPatiInfo.setEntName (changToString(objectArray[31]));
        
        //单位联系人姓名
        patiInfo.setEntLinkName (changToString(objectArray[32]));
        inPatiInfo.setEntLinkName (changToString(objectArray[32]));
        
        //患者付款类型
        patiInfo.setPatiPayTypeCode (changToString(objectArray[33]));
        
        //建档日期
        patiInfo.setCreateDate (changToString(objectArray[34]).replace("-", ""));
        
        //拼音码
        patiInfo.setSpellCode (changToString(objectArray[35]));
        
        //五笔码
        patiInfo.setWbCode (changToString(objectArray[36]));
        
        //empi号
        patiInfo.setEmpiId (changToString(objectArray[37]));
        
       
        
        //联系人姓名
        patiInfo.setCtName (changToString(objectArray[38]));
        inPatiInfo.setCtName (changToString(objectArray[38]));
        
        //与患者关系类型编码
        patiInfo.setCtRoleCode (changToString(objectArray[39]));
        inPatiInfo.setCtRoleCode (changToString(objectArray[39]));
        
        //联系人关系名称
        patiInfo.setCtRoleName (changToString(objectArray[40]));
        
        //联系人地址
        patiInfo.setCtAddr (changToString(objectArray[41]));
        inPatiInfo.setCtAddr (changToString(objectArray[41]));
        
        //联系人电话
        patiInfo.setCtTeleNum (changToString(objectArray[42]));
        inPatiInfo.setCtTeleNum (changToString(objectArray[42]));
        
        //联系人手机
        patiInfo.setCtHandset (changToString(objectArray[43]));
        inPatiInfo.setCtHandSet (changToString(objectArray[43]));
        
        //患者类别
        inPatiInfo.setAdmitSrc (changToString(objectArray[44]));
 
        
       
        //科室id
        inPatiInfo.setOrgIdDiag (changToString(objectArray[45]));
        inPatiInfo.setOrgIdDiag("ceshi_fd");
        
        // 科室名称
        inPatiInfo.setOrgNameDiag (changToString(objectArray[46]));
        
        //病房
        inPatiInfo.setOrgIdLoc (changToString(objectArray[47]));
        inPatiInfo.setOrgIdLoc ("ceshi222_fd");
        
        //床号
        inPatiInfo.setBed(changToString(objectArray[49]));

        //医疗机构编码
        inPatiInfo.setOrgIdHosp (changToString(objectArray[50]));
        inPatiInfo.setOrgIdHosp ("zwdsrmyy_fd");
        
        //主治医师编码
        inPatiInfo.setEmpIdVis (changToString(objectArray[51]));
        
        //主治医师名称
        inPatiInfo.setEmpNameVis (changToString(objectArray[52]));
        
        //分管医师编码
        inPatiInfo.setEmpIdBar (changToString(objectArray[53]));
        
        //分管医师名称
        inPatiInfo.setEmpNameBar (changToString(objectArray[54]));
        
        //住院流水号
        inPatiInfo.setInPatinfoId (changToString(objectArray[55]));
        inPatiInfo.setInPatinfoId ("CCVVFF907");
        
        
        //入院日期
        inPatiInfo.setInputDate (changToString(objectArray[56]).replace("-", ""));
        
        //出院日期
        inPatiInfo.setDischargeDate (changToString(objectArray[57]).replace("-", ""));
        
        //病危状态编码
        inPatiInfo.setPcisStatus (changToString(objectArray[58]));
        
        //入院次数
        inPatiInfo.setInTimes (changToString(objectArray[59]));
        
        //入院情况
       inPatiInfo.setAdminStatus (changToString(objectArray[60]));
        
        //医保类型编码
       inPatiInfo.setMedInsuTypeCode (changToString(objectArray[61]));
       
        //医保类型名称
       inPatiInfo.setMedInsuName (changToString(objectArray[62]));
       
       //医保号
       inPatiInfo.setMedInsuNo (changToString(objectArray[63]));
       
       //身高
       inPatiInfo.setHerght (changToString(objectArray[64]));
       
       //体重
       inPatiInfo.setWeight (changToString(objectArray[65]));
       
       //登记人编码
       inPatiInfo.setEmpIdInput (changToString(objectArray[66]));
       
       //登记人名称
       inPatiInfo.setEmpNameInput (changToString(objectArray[67]));
              
/*       PID||patiInfo.patiId|patiInfo.idCard||patiInfo.patiName~patiEName||patiInfo.birthDate|patiInfo.sexCode|||
       patiInfo.fiAddr^^^^patiInfo.fiPostCode^^~patiInfo.entAddr^^^^patiInfo.entPostCode^^||^patiInfo.fiTeleNum|^patiInfo.entTeleNum||patiInfo.marriedCode^patiInfo.marriedName|||||
       |patiInfo.nationalityCode^patiInfo.nationalityName|patiInfo.birthPlace|||||patiInfo.countryCode^patiInfo.countryName|||
       ||||||||patiInfo.bloodType|patiInfo.nativePlaceCode^patiInfo.nativePlaceName|
       patiInfo.fiAreaCode^patiInfo.fiAreaName|patiInfo.retireTypeCode^patiInfo.retireTypeName|patiInfo.patiEmail|patiInfo.occupationCode^patiInfo.occupationName|patiInfo.regiLocCode^patiInfo.regiLocName|patiInfo.entName|patiInfo.entLinkName|patiInfo.patiPayTypeCode|patiInfo.createDate|patiInfo.spellCode|
       patiInfo.wbCode|patiInfo.empiId&#x000D;*/
       
//     NK1||patiInfo.ctName|patiInfo.ctRoleCode^patiInfo.ctRoleName|patiInfo.ctAddr|^patiInfo.ctTeleNum~^patiInfo.ctHandset&#x000D;
       
       String MSH = "MSH|^~\\&amp;|HIS||EMR||201101050930||ADT^A01|MSG11O1O5OOO001|P|2.4||||||utf-8&#x000D;";
       String PID = "PID||"+patiInfo.getPatiId()+"|"+patiInfo.getIdCard()+"||"+patiInfo.getPatiName()+"~"+patiInfo.getPatiEName()+"||"+patiInfo.getBirthDate()+"|"+patiInfo.getSexCode()+"|||"+    		   
    		   patiInfo.getFiAddr()+"^^^^"+patiInfo.getFiPostCode()+"^^~"+patiInfo.getEntAddr()+"^^^^"+patiInfo.getEntPostCode()+"^^||^"+patiInfo.getFiTeleNum()+"|^"+patiInfo.getEntTeleNum()+"||"+patiInfo.getMarriedCode()+"^"+patiInfo.getMarriedName()+"|||||"+
    	       "|"+patiInfo.getNationalityCode()+"^"+patiInfo.getNationalityName()+"|"+patiInfo.getBirthPlace()+"|||||"+patiInfo.getCountryCode()+"^"+patiInfo.getCountryName()+"|||"+
    	       "||||||||"+patiInfo.getBloodType()+"|"+patiInfo.getNativePlaceCode()+"^"+patiInfo.getNativePlaceName()+"|"+
    	       patiInfo.getFiAreaCode()+"^"+patiInfo.getFiAreaName()+"|"+patiInfo.getRetireTypeCode()+"^"+patiInfo.getRetireTypeName()+"|"+patiInfo.getPatiEmail()+"|"+patiInfo.getOccupationCode()+"^"+patiInfo.getOccupationName()+"|"+patiInfo.getRegiLocCode()+"^"+patiInfo.getRegiLocName()+"|"+patiInfo.getEntName()+"|"+patiInfo.getEntLinkName()+"|"+patiInfo.getPatiPayTypeCode()+"|"+patiInfo.getCreateDate()+"|"+patiInfo.getSpellCode()+"|"+
    	       patiInfo.getWbCode()+"|"+patiInfo.getEmpiId()+"&#x000D;";

       String NK1= "NK1||"+patiInfo.getCtName()+"|"+patiInfo.getCtRoleCode()+"^"+patiInfo.getCtRoleName()+"|"+patiInfo.getCtAddr()+"|^"+patiInfo.getCtTeleNum()+"~^"+patiInfo.getCtHandset()+"&#x000D;";

//       String PV1 = "PV1||"+inPatiInfo.getAdmitSrc()+"|"+inPatiInfo.getOrgIdDiag()+"&"+inPatiInfo.getOrgNameDiag()+"^"+inPatiInfo.getOrgIdLoc()+"&"+inPatiInfo.getOrgNameLoc()+"^"+inPatiInfo.getBed()+"||||"+inPatiInfo.getEmpIdVis()+"^"+inPatiInfo.getEmpNameVis()+"~"+inPatiInfo.getEmpIdBar()+"^"+inPatiInfo.getEmpNameBar()+"||||"+
//    	       "|||"+inPatiInfo.getAdmitSrc()+"|||||"+inPatiInfo.getInPatinfoId()+"||"+
//    	       "||||||||||"+
//    	       "||||||||||"+
//    	       "|||"+inPatiInfo.getInputDate()+"|"+inPatiInfo.getDischargeDate()+"||||||"+
//    	       "||||"+inPatiInfo.getPcisStatus()+"|"+inPatiInfo.getInTimes()+"|"+inPatiInfo.getAdminStatus()+"|"+inPatiInfo.getMedInsuTypeCode()+"^"+inPatiInfo.getMedInsuName()+"|"+inPatiInfo.getMedInsuNo()+"|"+inPatiInfo.getHerght()+"^cm|"+
//    	       inPatiInfo.getWeight()+"^KG|"+inPatiInfo.getEmpIdInput()+"^"+inPatiInfo.getEmpNameInput()+"&#x000D";

       String PV1 = "PV1||"+inPatiInfo.getAdmitSrc()+"|"+inPatiInfo.getOrgIdDiag()+"^"+inPatiInfo.getOrgIdLoc()+"^"+inPatiInfo.getBed()+"||||"+inPatiInfo.getEmpIdVis()+"^"+inPatiInfo.getEmpNameVis()+"~"+inPatiInfo.getEmpIdBar()+"^"+inPatiInfo.getEmpNameBar()+"||||"+
    		   "|||"+inPatiInfo.getAdmitSrc()+"|||||"+inPatiInfo.getInPatinfoId()+"||"+
    		   "||||||||||"+
    		   "||||||||||"+
    		   "|||"+inPatiInfo.getInputDate()+"|"+inPatiInfo.getDischargeDate()+"||||||"+
    		   "||||"+inPatiInfo.getPcisStatus()+"|"+inPatiInfo.getInTimes()+"|"+inPatiInfo.getAdminStatus()+"|"+inPatiInfo.getMedInsuTypeCode()+"^"+inPatiInfo.getMedInsuName()+"|"+inPatiInfo.getMedInsuNo()+"|"+inPatiInfo.getHerght()+"^cm|"+
    		   inPatiInfo.getWeight()+"^KG|"+inPatiInfo.getEmpIdInput()+"^"+inPatiInfo.getEmpNameInput();

       if(Diaglist.size()>0)
       {
    	   PV1 = PV1+"&#x000D;";
    	   String DG1 ="";
   		for(int i=0;i<Diaglist.size();i++)
   		{
   			Object[] diagArray = (Object[])Diaglist.get(i);
               InPatiDiag inPatiDiag = new InPatiDiag ();
             
             //疾病编码 
             inPatiDiag.setInDiagIcd (changToString(diagArray[0]));
             
             //疾病诊断名称
             inPatiDiag.setDiagName (changToString(diagArray[1]));
             
             //诊断日期
             inPatiDiag.setInDiagDate (changToString(diagArray[2]).replace("-", ""));
             
             //诊断类型
             inPatiDiag.setInDiagClassCode (changToString(diagArray[3]));
             
             //诊断医生编码
             inPatiDiag.setEmpIdDiag (changToString(diagArray[4]));
             
             //诊断医生名称
             inPatiDiag.setEmpNameDiag (changToString(diagArray[5]));
             
             DG1 += "DG1|||"+inPatiDiag.getInDiagIcd()+"|"+ inPatiDiag.getDiagName()+"|"+inPatiDiag.getInDiagDate()+"|"+inPatiDiag.getInDiagClassCode()+"||||||||||"+inPatiDiag.getEmpIdDiag()+"^"+inPatiDiag.getEmpNameDiag()+"&#x000D;";
             
   		}
   		    DG1 = DG1.substring(0, DG1.lastIndexOf("&#x000D;"));
   	        System.out.println(MSH);
   	        System.out.println(PID);
   	        System.out.println(NK1);
   	        System.out.println(PV1);
   		    System.out.println(DG1);
   		   return MSH+PID+NK1+PV1+DG1;
       }
       
        System.out.println(MSH);
        System.out.println(PID);
        System.out.println(NK1);
        System.out.println(PV1);
		return MSH+PID+NK1+PV1;
	}
	
	private String  changToString(Object object)
	{
		if (object !=null)
		return object.toString();
		else 
		return "";
		
	}

}
